const { contextBridge, ipcRenderer } = require("electron");
//ipcRenderer 渲染进程（例如你的 UI 代码）与主进程之间进行进程间通信（IPC）
// 在contextBridge 沙盒化，安全
contextBridge.exposeInMainWorld("electronAPI", {
  NODE_VERSION: process.versions.node,
  chrome: () => process.versions.chrome,
  electron: () => process.versions.electron,
  //接收前端传过来的value
  sendValue: (value) => {
    console.log("获得前端传过来的值：", value);
    // 注册同步发送事件，发送一个消息到主进程
    ipcRenderer.send("send-value", value);
    // 监听主进程发送的消息
    ipcRenderer.on("reply-channel", (event, message) => {
      console.log("监听主进程同步相应reply-channel:", message);
      /**
       * 监听到的数据给前端，有两种方法（建议第二种）
       * 一：直接操作 DOM
       * 二：通过自定义事件通知前端
       */
      // 方法一：假设有一个ID为"getres"的元素，用来显示消息
      // document.getElementById("getres").innerText =
      //   "发送信息的回应：" + message;
      //方法二：派发一个自定义事件，传递消息
      const customEvent = new CustomEvent("ipc-message", { detail: message });
      window.dispatchEvent(customEvent);
    });

    // 发送异步消息并等待响应
    // ipcRenderer.invoke("async-message", value).then((response) => {
    //   console.log("来自主进程异步相应async-message:", response);
    // });
  },
  //暴露进程异步方法
  fetchData: (param) => ipcRenderer.invoke("async-message", param),
  // 使用 获取mysql数据
  getMysqlData: () => ipcRenderer.invoke("getMysqlData"),
});
